Gatling (software)
   HOME

TheInfoList



OR:

Gatling is an open-source load- and performance-testing framework based on Scala, Akka and Netty. The first stable release was published on January 13, 2012. In 2015, Gatling's founder, Stéphane Landelle, created a company (named "Gatling Corp"), dedicated to the development of the open-source project. According to Gatling Corp's official blog, Gatling was downloaded more than 1,000,000 times (2021). In June 2016, Gatling officially presented Gatling FrontLine, Gatling's Enterprise Version with additional features. The software is designed to be used as a
load testing Load testing is the process of putting demand on a structure or system and measuring its response. Software load testing The term ''load testing'' is used in different ways in the professional software testing community. ''Load testing'' gen ...
tool for analyzing and measuring the performance of a variety of services, with a focus on
web application A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serv ...
s. Gatling was mentioned twice in ThoughtWorks Technology Radar, in 2013 and 2014, "as a tool worth trying", with an emphasis on "the interesting premise of ''treating your performance tests as production code''". The latest stable release is Gatling 3.8.0, published on July 06, 2022.


Overview

Gatling Corp develops the open-source performance testing tool for web applications, Gatling, and its enterprise version, Gatling FrontLine. The Project's aims include; * High performance * Ready-to-present HTML reports * Scenario recorder and developer-friendly DSL


Terminology

* Simulation: The simulation file includes the different ''scenarios'' of a test, its parametrization and the ''injection profiles''. Technically speaking, a simulation is a Scala class. Here is an example of a simulation: class BasicSimulation extends Simulation * Scenario: A scenario consists of a series of ''requests''. Each scenario within a ''simulation'' can have its own ''injection profile''. Here is an example of a scenario: val scn = scenario("BasicSimulation") .exec(http("request_1") .get("/")) .pause(5) setUp( scn.inject(atOnceUsers(1)) ).protocols(httpConf) * Group: Groups can be used as a subdivision of a ''scenario''. It is also a series of ''requests'', that has a functional purpose (for instance, the login process). * Request: Gatling is able to simulate complex users' behaviors. For this purpose, it generates the appropriate requests in the system under test. Here is an example of a request in Gatling: exec(http("request_1") .get("/")) .pause(5) * Injection profile: An injection profile is the number of virtual users injected during the test in the system under test and how they are injected. Here is an example of an injection profile: setUp( scn.inject(atOnceUsers(1)) ).protocols(httpConf)


Architecture

Gatling implemented a fully new architecture for a performance testing tool, in order to be more resource efficient. It makes it possible to simulate a high number of requests per second with a single machine.


Components


Recorder

Gatling comes up with a recorder to bootstrap a simulation.


Domain-specific language

Gatling is provided with a simple and lightweight Domain-specific language, in which simulations and scenarios are coded. This allows users to add custom behavior through many hooks. This makes simulation scripts readable and easy to maintain. This is an example of how Gatling's Domain-specific language looks like (see also ): val scn = scenario("BasicSimulation") .exec(http("request_1") .get("/")) .pause(5)


HTML reports

At the end of each test, Gatling generates an HTML report. Reports include: * Active users over time * Response time distribution * Response time
percentile In statistics, a ''k''-th percentile (percentile score or centile) is a score ''below which'' a given percentage ''k'' of scores in its frequency distribution falls (exclusive definition) or a score ''at or below which'' a given percentage fal ...
s over time * Requests per second over time * Responses per second over time


Protocols support and plugins

It officially supports the following protocols: *
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide We ...
* WebSockets *
Server-sent events Server-Sent Events (SSE) is a server push technology enabling a client to receive automatic updates from a server via an HTTP connection, and describes how servers can initiate data transmission towards clients once an initial client connection has ...
* JMS Gatling documentation states that it is protocol agnostic, which makes it possible to implement other protocols' support. Here is a non-exhaustive list of community protocols support: *
MQTT MQTT (originally an initialism of MQ Telemetry Transport) is a lightweight, publish-subscribe, machine to machine network protocol for Message queue/Message queuing service. It is designed for connections with remote locations that have devices ...
* Advanced Message Queuing Protocol (AMQP) *
ZeroMQ ZeroMQ (also spelled ØMQ, 0MQ or ZMQ) is an asynchronous messaging library, aimed at use in distributed or concurrent applications. It provides a message queue, but unlike message-oriented middleware, a ZeroMQ system can run without a dedicated ...


Plugins

Gatling comes out with official and community plugins. It integrates with: * Integrated development environments (IDE), like
Eclipse (software) Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It is the second-most-popular IDE for Java development, and, u ...
and
IntelliJ IDEA IntelliJ IDEA is an integrated development environment (IDE) written in Java for developing computer software written in Java, Kotlin, Groovy, and other JVM-based languages. It is developed by JetBrains (formerly known as IntelliJ) and is av ...
* Build automation software, or Build tools, like
Apache Maven Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
and
SBT sbt is an open-source build tool for Scala (programming language), Scala and Java (programming language), Java projects, similar to Apache Software Foundation, Apache's Apache Maven, Maven and Gradle. Its main features are: *Native support fo ...
* Continuous Integration solutions like Jenkins Here is a non-exhaustive list of community plugins: *
Gradle Gradle is a build automation tool for multi-language software development. It controls the development process in the tasks of compilation and packaging to testing, deployment, and publishing. Supported languages include Java (as well as Kotli ...
* Apache Kafka * Java Database Connectivity (JDBC) *
Apache Cassandra Cassandra is a free and open-source, distributed, wide-column store, NoSQL database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassand ...
*
RabbitMQ RabbitMQ is an open-source message-broker software (sometimes called message-oriented middleware) that originally implemented the Advanced Message Queuing Protocol (AMQP) and has since been extended with a plug-in architecture to support Str ...
* SQL


Continuous integration

Automation with Gatling is related to its simulations' maintainability. The integration with other developer tools, especially in the
DevOps DevOps is a set of practices that combines software development (''Dev'') and IT operations (''Ops''). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to ...
lifecycle, makes it possible to industrialize performance tests, that is to say to fully automate the execution of performance testing campaigns in the software development process.


Major and minor releases


Licensing

Gatling is published under Apache License 2.0, a
permissive {{about, , the 1970 British film, Permissive (film), the grammatical mode, Permissive mood, the flavor of software license, permissive free software licence A permissive cell or host is one that allows a virus to circumvent its defenses and replica ...
free software license A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) ...
written by the Apache Software Foundation (ASF). The source code is accessible on
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
.


Gatling Enterprise

Gatling Enterprise is the commercial version of Gatling. Gatling Enterprise is
proprietary software Proprietary software is software that is deemed within the free and open-source software to be non-free because its creator, publisher, or other rightsholder or rightsholder partner exercises a legal monopoly afforded by modern copyright and i ...
. It is distributed by Gatling Corp.


Company

Gatling started as an open-source project in 2012. 3 years later, in 2015, its founder, Stéphane Landelle, created a dedicated company named "Gatling Corp".


Origins of the open-source project

Gatling was designed by Stéphane Landelle when he was the Chief Technology Officer (CTO) of a French IT consulting firm, eBusiness Information.


Creation of a dedicated company

In 2015, a dedicated company was created. It provides Gatling's users with professional services and, since 2016, with an Enterprise Version of Gatling, Gatling FrontLine. The company is based in Bagneux, France, near Paris. It is a subsidiary of the IT consulting firm where it was created, eBusiness Information. Gatling Corp is a member of
Systematic Paris-Region Systematic Paris-Region is an Île-de-France business cluster created in 2005, devoted to complex systems and ICT. History During its first two years of operation, The cluster Systematic Paris-Region has launched 207 research projects representi ...
, an
Île-de-France The Île-de-France (, ; literally "Isle of France") is the most populous of the eighteen regions of France. Centred on the capital Paris, it is located in the north-central part of the country and often called the ''Région parisienne'' (; en, Pa ...
business cluster A business cluster is a geographic concentration of interconnected businesses, suppliers, and associated institutions in a particular field. Clusters are considered to increase the productivity with which companies can compete, nationally and gl ...
created in 2005, devoted to complex systems and ICT.Qui sommes-nous?
/ref>
Systematic Paris-Region Systematic Paris-Region is an Île-de-France business cluster created in 2005, devoted to complex systems and ICT. History During its first two years of operation, The cluster Systematic Paris-Region has launched 207 research projects representi ...
gathers large groups, SMEs, universities and research labs to promote digital innovation. Gatling is a member of Systematic's Open Source Working Group and was elected member of Systematic's board of directors, as a representative of SMEs, in November 2016. The company took part in some events, like the Paris Open Source Summit (POSS, 2015, 2016 and 2017 editions),
Liferay Liferay, Inc., is an open-source company that provides free documentation and paid professional service to users of its software. Mainly focused on enterprise portal technology, the company has its headquarters in Diamond Bar, California, United ...
's 2016 Symposium, Java User Group (JUG)'s meetings, the Paris Gatling User Group and the New York Gatling User Group.


See also

*
Apache JMeter Apache JMeter is an Apache project that can be used as a load testing tool for analyzing and measuring the performance of a variety of services, with a focus on web applications. JMeter can be used as a unit-test tool for JDBC database connectio ...
* LoadRunner *
Web server benchmarking Web server benchmarking is the process of estimating a web server performance in order to find if the server can serve sufficiently high workload. Key parameters The performance is usually measured in terms of: *Number of requests that can be se ...
*
Software performance testing In software quality assurance, performance testing is in general a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, valid ...
*
Performance engineering Performance engineering encompasses the techniques applied during a systems development life cycle to ensure the non-functional requirements for performance (such as throughput, latency, or memory usage) will be met. It may be alternatively refe ...
*
Software testing Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
*
Selenium Selenium is a chemical element with the symbol Se and atomic number 34. It is a nonmetal (more rarely considered a metalloid) with properties that are intermediate between the elements above and below in the periodic table, sulfur and tellurium, ...


References

{{Reflist * Load testing tools Java platform Free software programmed in Scala